
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import os
class SendEmail:
    def send163(self):
        # 配置邮箱服务器信息
        smtp_server = 'smtp.163.com'  # 示例为QQ邮箱的SMTP服务器
        smtp_port = 25  # QQ邮箱的SMTP端口号（对于TLS加密）
        smtp_user = 'Yao1965302350@163.com'  # 发送邮箱的账号
        smtp_pass = 'JMd5W3BLdnLbshf4'  # 发送邮箱的授权码（不是密码，需要在邮箱设置中获取）

        # 配置发件人、收件人信息
        sender = smtp_user
        receivers = ['13552648187@163.com', '2942765969@qq.com']  # 收件人邮箱地址列表

        # 构建邮件内容
        message = MIMEMultipart()
        message['Subject'] = '测试报告'  # 邮件主题
        message['From'] = sender  # 发件人
        message['To'] = ', '.join(receivers)  # 收件人，用逗号连接多个邮件地址实现群发

        # 添加邮件正文（可选）
        # body = MIMEText('这是邮件的正文内容。', 'plain', 'utf-8')
        # message.attach(body)

        # 添加附件（Allure生成的测试报告）
        report_dir = r'F:\PythonFile\Define\hello\report'  # Allure报告所在的目录
        report_zip = r'F:\PythonFile\Define\hello\report.rar'  # 压缩后的报告文件名

        # 压缩Allure报告（如果需要）
        # os.chdir(os.path.dirname(report_dir))  # 切换到报告目录的父目录
        # os.system(f'zip -r {report_zip} {os.path.basename(report_dir)}')  # 使用zip命令压缩报告目录

        # 将压缩后的报告作为附件添加到邮件中
        with open(report_zip, 'rb') as f:
            attachment = MIMEApplication(f.read(), 'zip')
            attachment.add_header('Content-Disposition', 'attachment', filename=report_zip)
            message.attach(attachment)

        # 发送邮件
        try:
            with smtplib.SMTP(smtp_server, smtp_port) as server:
                server.starttls()  # 启动TLS加密
                server.login(smtp_user, smtp_pass)  # 登录邮箱账号
                server.send_message(message)  # 发送邮件
            print('邮件发送成功！')
        except smtplib.SMTPException as e:
            print(f'邮件发送失败：{e}')

        # 清理临时文件（如果需要）
        # os.remove(report_zip)  # 删除压缩后的报告文件（如果不再需要）


